As the volume of internet traffic has increased rapidly, the ability to balance traffic loads over multiple computers has become increasingly important. Such balancing allows optimal resource utilization, throughput, and response time.
Traditionally, load balancing is performed based on tracking connections. The tracking of connections is suited for tracking protocols that tie the transport layer and transaction layer together. For example, with hypertext transport protocol (HTTP), a transaction is tied to the transmission control protocol (TCP) transport layer, meaning that the response transaction is transported back via the same connection the request was received on. This means that if the connection fails, the transaction will fail or die.
However, traditional load balancing techniques are not well suited for protocols which are transport layer and transaction independent. For example, with Session Initiation Protocol (SIP), multiple transactions for the same or different calls can be transported via the same TCP connection, and responses can be transmitted back through a new TCP connection if the original connection has failed. Thus, applications of traditional load balancing techniques may result in insufficient connection reuse, resulting in an imbalance over SIP servers. Further, unlike other protocols, with SIP, it is common practice for a server to initiate a new request to a client which traditional load balancing approaches do not support. The independence between transaction and transport layer of SIP makes the traditional load balancing techniques no longer feasible.